# -*- coding: utf-8 -*-
from django.db import models

class tipo(models.Model):
    nome = models.CharField(max_length=100, null=False, unique=True )
    descricao = models.CharField(max_length=200, null=True)
    altura = models.FloatField(null=True)
    consumo = models.IntegerField(null=True)
    
    
    def __unicode__(self):
        return self.nome


    
class projeto(models.Model):
    nome = models.CharField(max_length=100,null=False, unique=True  )
    customensal = models.FloatField(null=True)
    custoimplantacao = models.FloatField(null=True)
    custoanual = models.FloatField(null=True)
    
    
    def __unicode__(self):
        return self.nome
    
    

    def getcustomensalprojeto(self):
        CustoMensal = 0.0
        i = projeto(self)
        meusitens = item.objects.filter(itemprojeto = i)
        
        for it in meusitens:
            CustoMensal = CustoMensal + it.getcustomensal()
        
        
        return CustoMensal
    
    def getcustoequipamentos(self):
        CustoEquipamentos = 0.0
        i = projeto(self)
        meusitens = item.objects.filter(itemprojeto = i)
        
        for it in meusitens:
            CustoEquipamentos = CustoEquipamentos + it.getcustoequipamentos()
        
        
        return CustoEquipamentos
    
        
        
        
    
    def getcustoanualprojeto(self):
            
        return float(self.getcustomensalprojeto() * 12)
    
class item(models.Model):
    tipoitem = models.ForeignKey(tipo)
    valor = models.FloatField()
    qtdmemory = models.IntegerField(null=True)
    disco = models.CharField(max_length=100)
    qtddiscos = models.IntegerField(null=True)
    qtdprocessor = models.IntegerField(null=True)
    modelprocessor = models.CharField(max_length=100, null=True)
    quantidade = models.IntegerField()
    numinterfaces = models.IntegerField()
    itemprojeto = models.ForeignKey(projeto)
    pool = models.CharField(max_length=100)
    componente = models.CharField(max_length=100)
    
    def getcustoequipamentos(self):
        return float(self.valor) * float(self.quantidade)

    
    def getcustomensal(self):
        meutipo= tipo.objects.get(id = self.tipoitem.id)
        gastoCubagem = int(meutipo.altura) * 28.8 * 1.05 * 1.06 * 1.06 * 1.06 * 1.06
        gastoEnergia = int(meutipo.consumo) * 0.341 
        gastoInterfaces = int(self.numinterfaces) * 57.7 * 1.05 * 1.06 * 1.06 * 1.06 * 1.06
        gastoDepreciacao = float(self.valor) * (0.333333333333333)/12
        return (gastoCubagem + gastoEnergia + gastoInterfaces + gastoDepreciacao) * int(self.quantidade)
    
    def getcustomensalitem(self):
        meutipo= tipo.objects.get(id = self.tipoitem.id)
        gastoCubagem = int(meutipo.altura) * 28.8 * 1.05 * 1.06 * 1.06 * 1.06 * 1.06
        gastoEnergia = int(meutipo.consumo) * 0.341 
        gastoInterfaces = int(self.numinterfaces) * 57.7 * 1.05 * 1.06 * 1.06 * 1.06 * 1.06
        gastoDepreciacao = float(self.valor) * (0.333333333333333)/12
        return (gastoCubagem + gastoEnergia + gastoInterfaces + gastoDepreciacao)
      
    def getcustoanual(self):
        return self.getcustomensal() * 12
    
    def getcustoanualitem(self):
        return self.getcustomensalitem() * 12
    
    def __unicode__(self):
        return str(self.tipoitem) 
    

    